package main

import "fmt"

func main() {
	str := "Go is a beautiful language!"
	for i := 0; i < len(str); i++ {
		fmt.Printf("Character on position %d is: %c \n", i, str[i])
	}
	str2 := "中国人"
	for i := 0; i < len(str2); i++ {
		fmt.Printf("Character on position %d is: %c \n", i, str2[i])
	}
	//如果我们打印 str 和 str2 的长度，会分别得到 27 和 9。
	//由此我们可以发现，ASCII 编码的字符占用 1 个字节，既每个索引都指向不同的字符，而非 ASCII 编码的字符（占有 2 到 4 个字节）不能单纯地使用索引来判断是否为同一个字符。

	fmt.Println()
	fmt.Println("index int(rune) rune    char bytes")
	for index, rune := range str2 {
		fmt.Printf("%-2d      %d      %U '%c' % X\n", index, rune, rune, rune, []byte(string(rune)))
	}
}
